/**
 *
 * @description: map-set与数组和对象的比较
 * @author: junyong.hong
 * @createTime: 2018/3/28
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
{
    // set 和 array 数据结构横向对比：增删改查
    let map = new Map();
    let array = [];
    // 增
    map.set('t',1);
    array.push({t:1});
    console.info('map-array-add',map,array);

    // 查
    let map_exist = map.has('t');// true
    let array_exist = array.find(item=>item.t);// 遍历数组，查看是否存在;如果存在，就返回值
    console.info('map-array-find', map_exist, array_exist);

    // 改（map比较简单，array复杂）
    map.set('t',2);
    array.forEach(item => item.t ? item.t = 2 : '');
    console.info('map-array-modify',map, array);

    // 删（map比较简单，array复杂）
    map.delete('t');
    let index = array.findIndex(item => item.t);
    array.splice(index,1);
    console.info('map-array-remove',map, array);
}


{
    // set 和 array 的对比
    let set = new Set();
    let array = [];

    // 增
    set.add({t:1});
    array.push({t:1});
    console.info('set-array-add', set, array);

    // 查
    let set_exist = set.has({t:1});// false
    let array_exist = array.find(item=>item.t);// 遍历数组，查看是否存在;如果存在，就返回值
    console.info('set-array-find', set_exist, array_exist);

    // 改
    set.forEach(item => item.t ? item.t=2 :'');
    array.forEach(item => item.t ? item.t=2 :'');
    console.info('set-array-modify', set, array);

    // 删（set和array删除都相对麻烦）
    set.forEach(item => item.t ? set.delete(item) : '');
    let index = array.findIndex(item => item.t);
    array.splice(index, 1);
    console.info('set-array-remove', set, array);
}

{
    // set map 和 object 对比
    let item = {t:1};
    let map = new Map();
    let set = new Set();
    let obj = {};

    // 增
    map.set('t',1);
    set.add(item);
    obj['t'] = 1;
    console.info('map-set-obj', obj, map, set);

    // 查（obj不如map和set语义化）
    console.info({
        map_find:map.has('t'),
        set_find:set.has(item),
        obj_find:'t' in obj
    });

    // 改
    map.set('t',2);
    item.t = 2;
    obj['t'] = 2;
    console.log('map-set-obj-modify', obj, map, set);

    // 删（set和array删除都相对麻烦）
    map.delete('t');
    set.delete(item);
    delete obj['t'];
    console.log('map-set-obj-remove', obj, map, set);
}
















